// pages/detail/detail.js
/*
  数据库结构为一个用户对应一行数据，期中的list数组（记录用户id）用来记录谁给当前用户发送过好友请求
*/

const app = getApp()
const db = wx.cloud.database()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    detail: {}, //存放当前用户的信息
    isFriend: false, //是否是好友
    isHidden: false // 是否隐藏添加好友按钮
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options)
    let userId = options.userId; //获取传过来的用户id
    // 调用users表,根据userId来获取数据
    db.collection('users').doc(userId).get().then((res) => {
      // 更新当前用户的信息
      this.setData({
        detail: res.data 
      })

      //获取当前登录用户的好友列表
      let friendList  = res.data.friendList

      if( friendList.includes(app.userInfo._id) ){//如果好友列表中存在该用户
        // 是好友，isFriend设置为true
        this.setData({
          isFriend: true
        })
      }else{ //不是好友
        this.setData({
          isFriend: false
        },() => {
          if( userId == app.userInfo._id ){//如果是当前登录用户本人
            // 更新数据
            this.setData({
              isFriend: true,
              isHidden: true
            })
          }
        })
      }
    })
  },
  
  // 点击添加好友按钮
  handleAddFriend(){
    // 如果用户登录了
    if(app.userInfo._id){
      // 先对message数据库进行一个查询
      db.collection('message').where({
        userId: this.data.detail._id // 查询当前用户id的数据
      }).get().then((res) => { //获取数据成功

        //该用户已经在数据库中创建了一行数据（已经用户向其发送过请求）
        if(res.data.length){ 
          if(res.data[0].list.includes(app.userInfo._id)){ //list中已经有登录用户表示已经发送过申请
            // 弹出提示框
            wx.showToast({
              title: '已申请过',
            })
          }else{//list中没有登录用户的id，说明登录用户还未向当前用户发送过申请
            // 操作数据库在当前用户的list中添加当前登录用户的id
            wx.cloud.callFunction({ //调用update云函数
              name: 'update',
              data: { //传入以下参数
                collection :'message',
                where: {
                  userId: this.data.detail._id
                },
                data: `{list : _.unshift('${app.userInfo._id}')}`
              }
            }).then((res) => {//修改成功
              // 弹出提示框
              wx.showToast({
                title: '申请成功~',
              })
            })
          }
        }else{ //
          // 往message数据库中添加数据
          db.collection('message').add({
            data:{
              userId: this.data.detail._id, //接收申请用户
              list: [app.userInfo._id] //发送申请用户
            }
          }).then((rse) => { //添加数据成功
            // 弹出提示框
            wx.showToast({
              title:'申请成功'
            })
          })
        }

      })
    }else{ //用户未登录
      // 弹出提示框
      wx.showToast({
        title: '请先登录',
        // 停留两秒
        duration: 2000,
        icon: 'none',
        success: ()=>{
          // 页面跳转
          setTimeout( () => {
            wx.switchTab({
              url: '/pages/user/user',
            })
            // 两秒钟后跳转到登录页面
          },2000)
        }
      })
    }
  }
})